############# 查找 #############

x = "上海自来水来自海上"
# count(sub[, start[,end]]) 查询指定的子字符串出现的次数， start,end 用于指定查询范围
# 查询字符 海 在字符串中出现的次数
print(x.count('海'))  # 2
print(x.count('海', 0, 5))  # 1

# find(sub[, start[,end]]) 查询指定的子字符串在字符串指定范围内出现的下标值(从左往右)
print(x.find('海'))  # 1

print(x.find('哈'))  # -1

# rfind(sub[, start[,end]]) 查询指定的子字符串在字符串指定范围内出现的下标值(从右往左)
print(x.rfind('海'))  # 7
print(x.rfind('哈'))  # -1

# index(sub[, start[,end]]) 查询指定的子字符串在字符串指定范围内出现的下标值(从左往右),如果定位不到的时候会报错
print(x.index('海'))  # 1
# print(x.index('哈')) # ValueError: substring not found，定位不到的时候会报错

# rindex(sub[, start[,end]]) 查询指定的子字符串在字符串指定范围内出现的下标值(从右往左),如果定位不到的时候会报错
print(x.rindex('海'))  # 7
# print(x.rindex('哈')) # ValueError: substring not found，定位不到的时候会报错


############# 替换 #############
# expandtabs([tabsize=8]) 使用空格来替换制表符，并且返回一个新的字符串


# print("I love FishC") 前面的空白是制表符 tab
# print("I love my wife") 前面的空白是四个空格符
code = """ 
    print("I love FishC")
    print("I love my wife")"""
new_code = code.expandtabs(4)  # 参数 4 表示一个 tab 等于多少个空格
print(new_code)

# replace(old, new, count=-1) 使用 new 替换 old，默认所有都替换，除非指定 count=1 表示替换一处
print("在吗！我在你家楼下，快点下来！！".replace("在吗", "想你"))  # 想你！我在你家楼下，快点下来！！

# translate(table) 返回一个根据参数 table（指定转换规则的表格） 转换之后的新字符串
# 创建一个 table
table = str.maketrans("ABCDEFG", "1234567")
s = "I love FishC".translate(table)
print(s)  # I love 6ish3

table = str.maketrans("ABCDEFG", "1234567", "love")  # 最后一个参数 love 表示忽略掉这个字符串
s = "I love FishC".translate(table)
print(s)  # I  6ish3

x = "我爱python"
print(x.startswith("我"))  # True
print(x.startswith("小甲鱼"))  # False
print(x.endswith("python"))  # True
print(x.endswith("py", 0, 4))  # True
x = "她爱Python"
# 支持传入一个元组，只有有一个匹配成功则匹配成功
if x.startswith(("你", "我", "她")):
    print("总有人喜爱Python")  # 总有人喜爱Python

print("I love Python".istitle())  # False
print("I Love Python".istitle())  # True

print("I Love Python".isupper())  # False
print("I Love Python".islower())  # False

print("I Love Python".upper().isupper())  # True

# isalpha 是否全部都是字母
print("你好，girl".isalpha())  # False
print("hello，girl".isalpha())  # False
print("hello,girl".isalpha())  # False
print("helloGirl".isalpha())  # True

# 是否空白：空格，换行，制表符都是空白
print("     \n".isspace())  # True

# 是否可以打印
print("I Love Python".isprintable())  # True
# 是否可以打印,因为 \n 不可打印
print("I Love Python\n".isprintable())  # False

print("12345".isdecimal())  # True
print("12345".isdigit())  # True
print("12345".isnumeric())  # True

print("2²".isdecimal())  # False
print("2²".isdigit())  # True
print("2²".isnumeric())  # True

print("I II III IV V".isdecimal())  # False
print("I II III IV V".isdigit())  # False
print("I II III IV V".isnumeric())  # False

print("一二三四五".isdecimal())  # False
print("一二三四五".isdigit())  # False
print("一二三四五".isnumeric())  # True

# isdecimal isdigit isnumeric 三个方法任意一个返回 True 则返回 True
print("一二三四五".isalnum())  # True

# 是否是一个合法的python标识符
print("一二三四五".isidentifier())  # True
print("I am your".isidentifier())  # False
print("IAmYour".isidentifier())  # True
print("I_am_your".isidentifier())  # True

import keyword

# 是否python 关键字，保留字
print(keyword.iskeyword("if"))  # True
print(keyword.iskeyword("If"))  # False

print("     左侧不要留白".lstrip())  # 左侧不要留白
print("右侧不要留白     ".rstrip())  # 右侧不要留白
print("     左右侧不要留白     ".strip())  # 左右侧不要留白

# TODO 不懂
# 从左 依次去掉 w c o m . 这四个字符
print("www.ilovefishc.com".lstrip("wcom."))  # ilovefishc.com
# TODO 不懂
# 从右 依次去掉 w c o m . 这四个字符
print("www.ilovefishc.com".rstrip("wcom."))  # www.ilovefish
# TODO 不懂
print("www.ilovefishc.com".strip("wcom."))  # ilovefish

print("www.ilovefishc.com".removeprefix("www."))  # ilovefishc.com
print("www.ilovefishc.com".removesuffix(".com"))  # www.ilovefishc

#  拆分:从左到右找传入的分隔符，然后分割
print("www.ilovefishc.com".partition("."))  # ('www', '.', 'ilovefishc.com')

#  拆分:从右到左找传入的分隔符，然后分割
print("www.ilovefishc.com/python".partition("/"))  # ('www.ilovefishc.com', '/', 'python')

print("苟日新，日日新，又日新".split())  # ['苟日新，日日新，又日新']
print("苟日新 日日新 又日新".split())  # ['苟日新', '日日新', '又日新']
# 指定分割字符
print("苟日新，日日新，又日新".split('，'))  # ['苟日新，日日新，又日新']
# 指定分割字符
print("苟日新，日日新，又日新".rsplit('，'))  # ['苟日新，日日新，又日新']

# 指定分割的次数
print("苟日新，日日新，又日新".split('，', 1))  # ['苟日新', '日日新，又日新']
# 指定分割的次数
print("苟日新，日日新，又日新".rsplit('，', 1))  # ['苟日新，日日新', '又日新']

print("苟日新\n日日新\r又日新".splitlines())  # ['苟日新', '日日新', '又日新']
print("苟日新\n日日新\r\n又日新".splitlines())  # ['苟日新', '日日新', '又日新']

print("苟日新\n日日新\r又日新".splitlines(True))  # ['苟日新\n', '日日新\r', '又日新']

# 拼接
print(".".join(["www", "baidu", "com"]))  # www.baidu.com
# 拼接
print("^".join(["F", "ish", "C"]))  # F^ish^C

s = "FishC"
s += s
print(s)  # FishCFishC
print("".join(("FishC", "FishC")))  # FishCFishC
print("".join(s))  # FishCFishC
